<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>泛微后台————长期洽公JS逻辑</title>
</head>
<body>
    
</body>
</html>
<script>
    // 泛微后台————长期洽公旧版
	//页面加载事件
	jQuery().ready(function() {
        //获取明细表1的所有行标示
        var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
        //遍历明细行
        for (var i = 0; i < rowArr.length; i++) {
            var rowIndex = rowArr[i];
            if (rowIndex !== "") {
                //获取洽公卡类型的值
                var value = WfForm.getFieldValue("field670442_" + rowIndex);
                //不是出差人员时
                if (value !== 3) {
                    //修改是否住宿 值为空
                    WfForm.changeFieldValue("field670443_" + rowIndex, {value : ""});
                    //修改级别 值为空
                    WfForm.changeFieldValue("field670445_" + rowIndex, {value : ""});
                }
                //如果洽公卡类型为厂商
                else if (value == 1 || value == 2) {
                    //修改厂商名称字段属性为必填
                    WfForm.changeFieldAttr("field670446_" + rowIndex, 3);
                    //修改厂商名称(文本)字段属性为只读
                    WfForm.changeFieldAttr("field670447_" + rowIndex, 1);
                } else {//不为厂商时
                    //修改厂商名称字段属性为只读
                    WfForm.changeFieldAttr("field670446_" + rowIndex, 1);
                    //修改厂商名称(文本)字段属性为必填
                    WfForm.changeFieldAttr("field670447_" + rowIndex, 3);
                }
            }
        }
        //明细2添加行触发事件
        WfForm.registerAction(WfForm.ACTION_ADDROW + "2",function(index) {
            //alert("添加行下标是" + index);
            //设置结束日期为90天
            WfForm.controlDateRange("field670957_" + index, 0, 90);
        });
		//洽公卡类型 值改变事件    
		WfForm.bindDetailFieldChangeEvent("field670442",function(id, rowIndex, value) {
            //设置厂商名称字段值为空
            WfForm.changeFieldValue("field670446_" + rowIndex, {value : ""});
            //设置厂商名称(文本)字段值为空
            WfForm.changeFieldValue("field670447_" + rowIndex, {value : ""});
            //设置结束日期为空
            WfForm.changeFieldValue("field670952_" + rowIndex, {value : ""});
            //为客户时
            if (value == 0) {
                //设置结束日期为180天
                WfForm.controlDateRange("field670952_" + rowIndex, 0, 200);
            } else {
                //设置结束日期为90天
                WfForm.controlDateRange("field670952_" + rowIndex, 0, 90);
            }
            //不是出差人员时
            if (value !== 3) {
                //修改是否住宿 值为空
                WfForm.changeFieldValue("field670443_" + rowIndex, {value : ""});
                //修改级别 值为空
                WfForm.changeFieldValue("field670445_" + rowIndex, {value : ""});
            }
            //如果洽公卡类型为厂商
            if (value == 1 || value == 2) {
                //修改厂商名称字段属性为必填
                WfForm.changeFieldAttr("field670446_" + rowIndex, 3);
                //修改厂商名称(文本)字段属性为只读
                WfForm.changeFieldAttr("field670447_" + rowIndex, 1);
            } else {//不为厂商时
                //修改厂商名称字段属性为只读
                WfForm.changeFieldAttr("field670446_" + rowIndex, 1);
                //修改厂商名称(文本)字段属性为必填
                WfForm.changeFieldAttr("field670447_" + rowIndex, 3);
                //修改是否住宿 值为空
                WfForm.changeFieldValue("field670443_" + rowIndex, {value : ""});
            }
        });
        //是否住宿字段值 改变事件    
        WfForm.bindDetailFieldChangeEvent("field670443",function(id, rowIndex, value) {
            //不为是时
            if (value !== 0) {
                //修改级别 值为空
                WfForm.changeFieldValue("field670445_" + rowIndex, {value : ""});
            }
        });
        //身份证号字段值 改变事件  
        WfForm.bindDetailFieldChangeEvent("field670945",function(id, rowIndex, value) {
            //如果身份证号为空  直接返回
            if (value == '') {
                return;
            } else {
                //正则表达式
                let flag = 0;
                let reg = /^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
                let taibao = /^[a-zA-Z][0-9]{9}$/;
                let tbz = /^[0-9]{8}$/;
                let wjhz= /^[a-zA-Z][0-9]{8}$/;
                let wjhz1= /^[a-zA-Z][0-9]{7}$/;
                if (!reg.test(value)) {
                    flag++;//正常身份证号
                }
                if (!taibao.test(value)) {
                    flag++;//台湾身份证号
                }
                if (!tbz.test(value)) {
                    flag++;//台胞证号
                }
                if (!wjhz.test(value)) {
                    flag++;//外籍护照
                }
                if (!wjhz1.test(value)) {
                    flag++;//外籍护照
                }
                //格式错误
                if (flag == 5) {
                    //给出提示
                    WfForm.showMessage("身份证号格式错误");
                    //修改身份证号 值为空
                    WfForm.changeFieldValue("field670945_" + rowIndex,{value : ""});
                }
            }
        });
        //手机号码字段值 改变事件  
        WfForm.bindDetailFieldChangeEvent("field670950",function(id, rowIndex, value) {
            //如果手机号码为空  直接返回
            if (value == '') {
                return;
            } else if (value.length != 11) {
                //给出提示
                WfForm.showMessage("手机号码格式错误");
                //修改手机号码值为空
                WfForm.changeFieldValue("field670950_" + rowIndex, {value : ""});
            }
        });
        //表单提交/批准/提交需反馈/不需反馈等操作执行前，执行自定义逻辑并阻断/放行后续操作
        WfForm.registerCheckEvent(WfForm.OPER_SUBMIT,function(callback) {
            //alert("表单提交事件");
            //获取明细表一、三的总行数
            let detail_1 = WfForm.getDetailRowCount("detail_1");
            let detail_2 = WfForm.getDetailRowCount("detail_2");
            let detail_3 = WfForm.getDetailRowCount("detail_3");
            //判断是否有明细   没有给出提示  返回
            if (detail_1 == 0 && detail_2 == 0 && detail_3 == 0) {
                window.top.Dialog.alert("明细表数据不能为空!");
                return;
            }
            //获取明细表1的所有行标示
            var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
            //遍历明细行
            for (var i = 0; i < rowArr.length; i++) {
                //判断非台胞证，台湾身份证，外籍护照
                if ((WfForm
                .getFieldValue("field670945_" + rowArr[i]).length) != 10 && (WfForm
                .getFieldValue("field670945_" + rowArr[i]).length) != 8 && (WfForm
                .getFieldValue("field670945_" + rowArr[i]).length) != 9) {
                    //判断年龄是否大于65岁
                    if (((WfForm
                    .getFieldValue("field670442_" + rowArr[i])) == 1 || (WfForm
                    .getFieldValue("field670442_" + rowArr[i])) == 2) && (WfForm
                    .getFieldValue("field853942_" + rowArr[i])) >= 65) {
                        window.top.Dialog.alert("不符合要求，无法办理；请联系当地行政或总务！");
                        return;
                    }
                }
                //判断身份证号是否重复，重复则给出提示
                if ((WfForm.getFieldValue("field670946_" + rowArr[i])) == 1) {
                    window.top.Dialog.alert("身份证号码重复，无法办理新卡，有卡请【续期】，无卡请【补办】!");
                    return;
                    //判断洽公卡类型非公共卡   非客户	
                    //判断是否有照片，没有则给出提示
                }
                if ((WfForm.getFieldValue("field670442_" + rowArr[i])) != 4 && (WfForm.getFieldValue("field670442_" + rowArr[i])) != 0) {
                    if ((WfForm.getFieldValue("field670947_" + rowArr[i])) == 1) {
                        window.top.Dialog.alert("未上传人脸照片，无法办理!");
                        return;
                    }
                }
                //判断洽公卡类型是厂商
                if ((WfForm.getFieldValue("field670442_" + rowArr[i])) == 1 || (WfForm.getFieldValue("field670442_" + rowArr[i])) == 2) {
                    //判断是否环安考试，没有则给出提示
                    if ((WfForm.getFieldValue("field670948_" + rowArr[i])) == 1) {
                        window.top.Dialog.alert("未环安考试，无法办理!");
                        return;
                    }
                }
            }
            //获取明细表3的所有行标示
            var rowArr2 = WfForm.getDetailAllRowIndexStr("detail_3").split(",");
            //遍历明细3行
            for (var v = 0; v < rowArr2.length; v++) {
                //alert("遍历明细3行：" + rowArr2[v]);
                //判断状态是离职还是无卡
                if ((WfForm.getFieldValue("field670960_"+ rowArr2[v])) == 1) {
                    //离职状态，给出提示并返回
                    window.top.Dialog.alert("申请卡号已离职，请【续期】！");
                    return;
                } else if ((WfForm.getFieldValue("field670960_"+ rowArr2[v])) == 2) {
                    //无卡状态，给出提示并返回
                    window.top.Dialog.alert("无该卡号，请【新办】！");
                    return;
                }
            }
            //循环比对明细中的身份证号
            for (var k = 0; k < rowArr.length - 1; k++) {
                var a = WfForm.getFieldValue("field670945_" + rowArr[k]);
                for (var j = 1; j < rowArr.length - k; j++) {
                    var b = WfForm.getFieldValue("field670945_" + rowArr[j + k]);
                    //重复时  给出提示并返回
                    if (a == b) {
                        window.top.Dialog.alert("明细中有两行明细的身份证号相同，请重新填写！");
                        return;
                    }
                }
            }
            //继续提交需调用callback，不调用代表阻断
            callback();
        });
	});
</script>